From: Owen W. Taylor Date: Mon, 19 May 2014 23:14:21 +0000 (-0400) Subject: Support resource:/// URL's in GNOME_SHELL_JS envvar X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~2480 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=5d11941638fe2aef36390fdd55e66fdde2770f0d;p=gnome-shell.git Support resource:/// URL's in GNOME_SHELL_JS envvar It can be useful to augment the shell's search path by doing GNOME_SHELL_JS=resource:///org/gnome/shell: But this doesn't work because resource: is split off. Special case path elements that are just 'resource' and recombine them with the next element. https://bugzilla.gnome.org/show_bug.cgi?id=730409 --- diff --git a/src/shell-global.c b/src/shell-global.c index 78d149fae..f527c0f39 100644 --- a/src/shell-global.c +++ b/src/shell-global.c @@ -286,7 +286,33 @@ shell_global_init (ShellGlobal *global) if (shell_js) { + int i, j; search_path = g_strsplit (shell_js, ":", -1); + + /* The naive g_strsplit above will split 'resource:///foo/bar' into 'resource', + * '///foo/bar'. Combine these back together by looking for a literal 'resource' + * in the array. */ + for (i = 0, j = 0; search_path[i];) + { + char *out; + + if (strcmp (search_path[i], "resource") == 0 && search_path[i + 1] != NULL) + { + out = g_strconcat (search_path[i], ":", search_path[i + 1], NULL); + g_free (search_path[i]); + g_free (search_path[i + 1]); + i += 2; + } + else + { + out = search_path[i]; + i += 1; + } + + search_path[j++] = out; + } + + search_path[j] = NULL; /* NULL-terminate the now possibly shorter array */ } else {